

package com.hazelcast.collection;

import com.hazelcast.config.SplitBrainProtectionConfig;

import java.util.Set;

/**
 * Concurrent, distributed implementation of {@link Set}
 * <p>
 * <b>Note:</b> This class is <i>not</i> a general-purpose {@link Set}
 * implementation! While this class implements the {@link Set} interface,
 * it intentionally violates {@link Set}'s general contract, which mandates the
 * use of the {@code equals()} method when comparing objects. Instead of the
 * equals method this implementation compares the serialized byte version
 * of the objects.
 * <p>
 * Supports split brain protection {@link SplitBrainProtectionConfig} since 3.10 in cluster
 * versions 3.10 and higher.
 *
 * @param <E> the type of elements maintained by this set
 * @see Set
 */
public interface ISet<E> extends Set<E>, ICollection<E> {

    /**
     * Returns {@link LocalSetStats} for this collection.
     *
     * @return this collection's local statistics.
     */
    LocalSetStats getLocalSetStats();

}
